/**
 * mobx_config.js
 * MobX相关模块的统一配置入口
 */

// 基本模块结构
let mobx = null;
let mobxBindings = null;
let createStoreBindings = null;

// 尝试加载MobX模块，这些模块可能只在微信小程序环境中可用
try {
  // 使用正确的相对路径 - 路径基于整个微信小程序项目
  mobx = require('../../../miniprogram_npm/mobx-miniprogram/index');
  mobxBindings = require('../../../miniprogram_npm/mobx-miniprogram-bindings/index');
  createStoreBindings = mobxBindings ? mobxBindings.createStoreBindings : null;
} catch (error) {
  console.error('MobX模块加载失败，可能是当前不在微信小程序环境', error);
  // 提供空实现，避免在测试环境中报错
  mobx = {
    // 提供基本的API模拟实现
    observable: function(target) { return target; },
    action: function(fn) { return fn; },
    computed: function(getter) { return getter(); },
    runInAction: function(fn) { return fn(); },
    configure: function() {},
    autorun: function(fn) { fn(); return { dispose: function() {} }; }
  };
  mobxBindings = {};
  createStoreBindings = function() { 
    console.warn('当前环境不支持createStoreBindings'); 
    return { destroyStoreBindings: function(){} };
  };
}

/**
 * 创建安全的MobX action
 * 即使MobX库加载失败也能正常工作
 */
function createSafeAction(fn, name = 'unnamed') {
  try {
    if (typeof mobx.action === 'function') {
      return mobx.action(fn);
    } else {
      console.warn(`创建action失败[${name}]，使用原始函数`);
      return fn;
    }
  } catch (error) {
    console.error(`创建action失败[${name}]，使用原始函数`, error);
    return fn;
  }
}

/**
 * 导出MobX相关模块
 * @export {Object} mobx - MobX核心模块
 * @export {Object} mobxBindings - MobX绑定模块
 * @export {Function} createStoreBindings - 创建Store绑定的辅助函数
 * @export {Function} createSafeAction - 创建安全的MobX action
 */
module.exports = {
  mobx,
  mobxBindings,
  createStoreBindings,
  createSafeAction
}; 